Patch from William Pitcock: Ungrab windows if necessary when they are
authorRichard Hult <richard@imendio.com>
Thu, 6 Sep 2007 08:16:40 +0000 (08:16 +0000)
committerRichard Hult <rhult@src.gnome.org>
Thu, 6 Sep 2007 08:16:40 +0000 (08:16 +0000)
2007-09-06  Richard Hult  <richard@imendio.com>

* gdk/quartz/gdkwindow-quartz.c (_gdk_windowing_window_destroy):
Patch from William Pitcock: Ungrab windows if necessary when they
are destroyed, fixes bug #473441.

svn path=/trunk/; revision=18727

ChangeLog
gdk/quartz/gdkwindow-quartz.c

index adb6039da40c48486d8651e99b0f89ddd9948037..f9178896476f79e865f8386dd0852f01d186a927 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-06  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/gdkwindow-quartz.c (_gdk_windowing_window_destroy):
+       Patch from William Pitcock: Ungrab windows if necessary when they
+       are destroyed, fixes bug #473441.
+
 Wed Sep  5 14:15:17 2007  Tim Janik  <timj@imendio.com>
 
        * gtk/gtknotebook.c (gtk_notebook_class_init): fix wrong default value
index 11360b07bdc92f57d6e02905b6e8ac6db50a0987..5a8be2ee202516032f41a2ee6b00a17c70a54d57 100644 (file)
@@ -798,6 +798,15 @@ _gdk_windowing_window_destroy (GdkWindow *window,
   update_windows = g_slist_remove (update_windows, window);
   main_window_stack = g_slist_remove (main_window_stack, window);
 
+  /* If the destroyed window was targeted for a pointer or keyboard
+   * grab, release the grab.
+   */
+  if (window == _gdk_quartz_pointer_grab_window)
+    gdk_pointer_ungrab (0);
+
+  if (window == _gdk_quartz_keyboard_grab_window)
+    gdk_keyboard_ungrab (0);
+
   if (!recursing && !foreign_destroy)
     {
       GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);